在 MySQL 中,计算日期对应的季度有两种最常用、最简单的方法,直接用内置函数就能实现,无需复杂计算。
一、核心函数:QUARTER ()(推荐)
QUARTER(date) 是 MySQL 专门用于返回日期季度的函数,直接返回数字:
- 1~3 月 → 返回 1
- 4~6 月 → 返回 2
- 7~9 月 → 返回 3
- 10~12 月 → 返回 4
基础用法
sql
-- 示例1:直接计算指定日期的季度
SELECT QUARTER('2025-01-15'); -- 结果:1
SELECT QUARTER('2025-06-30'); -- 结果:2
SELECT QUARTER('2025-12-01'); -- 结果:4
-- 示例2:查询表中日期字段的季度(替换为你的表名和日期字段)
SELECT
create_time,
QUARTER(create_time) AS quarter
FROM your_table;
二、组合年份 + 季度(常用报表格式)
业务中通常需要 年份 + 季度 的格式,比如 2025Q1、2025年第1季度。
1. 格式:2025Q1
sql
SELECT
DATE_FORMAT(create_time, '%YQ%q') AS year_quarter
FROM your_table;
%Y= 4 位年份%q= 季度数字(1/2/3/4)
2. 格式:2025 年第 1 季度
sql
SELECT
CONCAT(YEAR(create_time), '年第', QUARTER(create_time), '季度') AS year_quarter
FROM your_table;
三、兼容旧版本:用 MONTH () 计算季度
如果 MySQL 版本极旧不支持 QUARTER(),可以用月份计算:
sql
SELECT
create_time,
CEIL(MONTH(create_time) / 3) AS quarter -- 月份除以3向上取整
FROM your_table;
效果和 QUARTER() 完全一致。
四、按季度分组统计(实战常用)
统计每个季度的数据总量 / 金额:
sql
SELECT
QUARTER(create_time) AS quarter, -- 季度
COUNT(*) AS total_count, -- 总条数
SUM(amount) AS total_amount -- 总金额
FROM your_table
GROUP BY QUARTER(create_time) -- 按季度分组
ORDER BY quarter;
总结
- 最简方案:
QUARTER(日期)→ 直接返回 1/2/3/4 - 年份 + 季度:
DATE_FORMAT(日期, '%YQ%q')→ 2025Q1 - 分组统计:
GROUP BY QUARTER(日期) - 所有方法支持
date/datetime/timestamp类型字段
正文完
可以使用微信扫码关注公众号(ID:xzluomor)